<?php
	$base_url = '/avto';

	// Инициализация системы.
	include('index.inc.php');
	include('includes/debugging.php');
	
	//$mvc->theme->name = 'extended'; // TODO: Подумать над темизацией
	
	// Выбор языка. Подумать над определениея языка для пользователя.
	$mvc->lang->lang = 'ru';
	$mvc->lang->load('main'); // Загрузка общего словаря.	
	
	$mvc->emit('E_MVC_PRELOAD_USER', array(), $mvc);
	// Загрузка пользователя (!Подумать на пользователями).
	// У пользователя прописаны права на доступ к сайту (контроллеры, методы, параметры).
	$mvc->user = new c_mvc_user_model();
	if (!$mvc->user->exists()) $mvc->user->logout();
	// Событие после загрузки пользователя.
	$mvc->emit('E_MVC_POSTLOAD_USER', array(), $mvc);

	$is_ajax = isset($_REQUEST['ajax']); // Флаг того, что это вызов через ajax.
	
	// Маршрутизация вызова. Определение прав внутри роутера.
	$app = new c_router_util();
	
	$mvc->emit('E_MVC_PREROUTE', array(), $mvc);
	// Вывод буферизирован, так как при вызове контроллера может быть вызван redirect либо заменены параметры темы.
	$html .= $app->route($_GET['q'], $_REQUEST);
	$mvc->emit('E_MVC_POSTROUTE', array(), $mvc);
		
	// TODO: Это тут временно.
	header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
	header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past	

	$mvc->emit('E_MVC_STARTED', array(), $mvc);

	$mvc->emit('E_MVC_PRERENDER_HEADER', array(), $mvc);
	$mvc->content = $is_ajax ? $mvc->theme->render('ajax_header') : $mvc->theme->render('header');	// Выодим заголовок страницы.
	$mvc->emit('E_MVC_POSTRENDER_HEADER', array(), $mvc);
	
	$mvc->content .= $html;																			// Выодим тело страницы.
	
	$mvc->emit('E_MVC_PRERENDER_FOOTER', array(), $mvc);
	$mvc->content .= $is_ajax ? $mvc->theme->render('ajax_footer') : $mvc->theme->render('footer');	// Выодим подвал страницы.
	$mvc->emit('E_MVC_POSTRENDER_FOOTER', array(), $mvc);
	
	
	function auto_disable_links($html, $class = 'disabled')
	{
		global $mvc;
		if (preg_match_all('/<a[^>]*(href=[\\\'\\\"]([^\\\"]*)[\\\'\\\"])+?[^>]*>/is', $html, $founds))
		{
			foreach($founds[0] as $k => $found)
			{
				$url = $founds[2][$k];
				
				if (!$mvc->user->url_allowed($url))
				{
					$new_code = str_replace(array($founds[1][$k], '>'), array('', ' class="'.$class.'">'), $found);
			
					$html = str_replace($found, $new_code, $html);
				}
			}
		}
		return $html;
	}
	// Заблокируем недоступные ссылки
	$mvc->content = auto_disable_links($mvc->content, 'disabled_link');
	
	$mvc->emit('E_MVC_POSTRENDER', array(), $mvc);	
	echo $mvc->content; // Выводим весь полученный код.
	
	$mvc->emit('E_MVC_FINISHED', array(), $mvc);
	
	$mvc->bm->add('finish');
	
	if (isset($_REQUEST['debug']))
	{
		include($mvc->view_path.'bm_default.php');
		echo '<br>';
		include($mvc->view_path.'messages.php');
	}
?>